//
//  IFlyDebugLog.h
//  AIKITDemo
//
//  Created by xyzhang on 2023/3/1.
//

#import <Foundation/Foundation.h>

#define IFLY_LOG_NEED_SHOW_FILE_LINE

#define IFLY_LOG_NEED_SHOW_FILE_LINE_FUNC

extern NSString* __IFlyLogTrimFilePath__(char* _Nonnull filePath);

#ifdef IFLY_LOG_NEED_SHOW_FILE_LINE
    #ifdef IFLY_LOG_NEED_SHOW_FILE_LINE_FUNC
        #define IFlyLog(fmt, ...) [IFlyDebugLog showLog:(@"[%@:%d] %s " fmt), __IFlyLogTrimFilePath__(__FILE__),__LINE__,__func__, ##__VA_ARGS__];
    #else
        #define IFlyLog(fmt, ...) [IFlyDebugLog showLog:(@"[%@:%d]" fmt), __IFlyLogTrimFilePath__(__FILE__),__LINE__, ##__VA_ARGS__];
    #endif
#else
    #define IFlyLog(fmt, ...) [IFlyDebugLog showLog:(fmt),##__VA_ARGS__];
#endif /*IFLY_LOG_NEED_SHOW_FILE_LINE*/


NS_ASSUME_NONNULL_BEGIN

@interface IFlyDebugLog : NSObject

/*!
 *  打印调试信息
 *
 *  @param format -[in] 要打印的内容格式
 *  @param ...    -[in] 要打印的内容
 */
+ (void)showLog:(NSString *)format, ...;


/// 打印调试信息，发送log通知
/// @param format 打印的内容
+ (void)consoleLog:(NSString *)format, ...;

/*!
 *  将log写入文件中
 */
+ (void)writeLog;

/*!
 *  设置是否显示log
 *
 *  @param showLog YES:显示；NO:不显示
 */
+ (void)setShowLog:(BOOL) showLog;

@end

NS_ASSUME_NONNULL_END
